package com.itheima.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;


/**
 * 文件上传工具类
 */
@Component
public class FileUploadUtils {


    @Value("${file.save-path}")
    private String fileSavePath;

    /**
     * 文件上传，并且返回新的文件名
     * @param file 文件
     * @return
     */
    public String upload(MultipartFile file) throws IOException {
        //获取原始文件名
        String originalFilename = file.getOriginalFilename();

        //生成新文件名
        //substring含义：截取字符串
        String extension = originalFilename.substring(originalFilename.lastIndexOf("."));

        //生成时间目录
        String format = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));

        //生成新文件名
        String newPathName =format+"/"+ UUID.randomUUID().toString()+extension;
        newPathName=fileSavePath+newPathName;

        //创建文件
       File dest= new File(newPathName);

       //判断父目录是否存在
        //dest.getParentFile()获取目标文件的父目录,exists()判断该父目录是否已经存在
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs(); // 自动使用 mkdirs() 创建多级目录
        }
        //保存文件
        file.transferTo(dest);

        //newPathName.indexOf(":")获取":"的位置，索引从0开始
        newPathName = newPathName.substring(newPathName.indexOf(":") + 1);

        return newPathName;

    }
}
